#ifndef __APP_LORA_H
#define __APP_LORA_H

#define DEBUG 1

#define MAX_FRAME_LEN 32

//枚举定义：帧格式
typedef enum
{
	LR_FRAME_HEAD_H 	= 0x69,		//帧头
	LR_FRAME_HEAD_L 	= 0xff,
	LR_FRAME_END_H  	= 0x96,		//帧尾
	LR_FRAME_END_L  	= 0xff,
	
	LR_FRAME_QUERY  	= 0xaa,		//查询
	
	LR_FRAME_SET    	= 0x55,		//设置
	
}lora_frame_t;

//枚举定义：应答格式
typedef enum
{
	LR_FRAME_ACK_QUERY  = 0xfa,		//应答查询
	LR_FRAME_ACK_SET	= 0xf5,		//应答设置
}lora_frame_ACK_t;



//枚举定义：模块码
typedef enum {
	LR_MODULE_TEST_LED		= 0xa0,	//板载LED测试
	LR_MODULE_RELAY 		= 0xa1,	//继电器
	LR_MODULE_LED 			= 0xa2,	//LED灯
	LR_MODULE_BUZZER 		= 0xa3,	//蜂鸣器
	LR_MODULE_DATA			= 0xa4,	//温湿度
} lora_module_t;

//枚举定义：寄存器
typedef enum {
    LR_REG_TEST_LED_STATE		= 0x01,	//板载LED测试
	
	LR_REG_RELAY_STATE		= 0x01,	//继电器状态
	
	LR_REG_LED_COLOR    	= 0x01,	//LED颜色
	
	LR_REG_BUZZER_STATE 	= 0x01,	//蜂鸣器状态
	
	LR_REG_DATE_ENABLE  	= 0x01,	//温湿度
} lora_register_t;

// 结构体定义：主机设置
typedef struct __Master
{
    uint8_t addr_h;         // 地址高位
    uint8_t addr_l;         // 地址低位
    uint8_t channel;        // 信道
} lora_Master_t;

// 结构体定义：从机设置
typedef struct __slave
{
    uint8_t addr_h;         // 地址高位
    uint8_t addr_l;         // 地址低位
    uint8_t channel;        // 信道
} lora_Slave_t;

// 结构体定义：查询
typedef struct __lora_frame_query
{
    uint8_t module;         // 模块码
    uint8_t register_addr;  // 寄存器地址
} lora_frame_query_t;

// 结构体定义：设置
typedef struct __lora_frame_set
{
    uint8_t module;         // 模块码
    uint8_t register_addr;  // 寄存器地址
    uint8_t data[2];        // 数据
} lora_frame_set_t;


void App_Lora_Init(void);



#endif
